package main

import "fmt"

// 切片
func main() {
	// nil
	var a []int           //声明int类型切片
	var b []int = []int{} //声明并初始化
	c := make([]int, 0)
	if a == nil {
		fmt.Println("a==nil")
	}
	fmt.Println(a, len(a), cap(a))

	if b == nil {
		fmt.Println("b==nil")
	}
	fmt.Println(b, len(b), cap(b))

	if c == nil {
		fmt.Println("c==nil ")
	}
	fmt.Println(c, len(c), cap(c))

	/*
		b,c都是指的是创建的是空切片，而a是nil切片
	*/
}

//理解：
//如果 slice == nil，那么 len、cap 结果都等于 0。
//nil切片：指的是在声明时不做任何初始化，就会创建一个nil的切片，
//更是指的是未初始化声明的状态，不是那种段变量声明和make构造函数的声明
//所以在判断切片是否为空的时候一般用len来去判断，
//要检查切片是否为空，请始终使用len(s) == 0来判断，而不应该使用s == nil来判断。
